import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo

/**
 * La clase Puerta permite pasar al siguiente nivel siempre y cuando este abierta
 * 
 * @author (Alcantar Noyola Christian Andres) 
 * @author (Sanchez Ovalle Daniel) 
 * @version (29/04/13)
 */
public class Puerta extends Actor
{

    private Jugador chango;
    private boolean abrir;

    /**
     * Este es el constructor de la clase puerta, aqui se inicializa la bandera de abrir
     * y se hace una escala a la imagen de la puerta
     */ 
    public Puerta()
    {
        GreenfootImage imagen=this.getImage();
        imagen.scale(30,40); 
        abrir=false;
    }

    /**
     * Este metodo checa constantemente si el chango existe y la puerta esta abierta
     */
    public void act()
    {
        this.checharPuerta();
        chango=(Jugador)this.getOneIntersectingObject(Jugador.class); 
        if(chango!=null && abrir)
        {
            chango.getLlaves().fijaValor(0);
            chango.incrementaPuntos();
            this.ChecaNivel();
        }
    }

    /**
     * Este metodo obtiene la bandera de la puerta
     * (true la puerta esta abierta, false la puerta esta cerrada)
     */
    public void checharPuerta()
    { 
        Escenario1 mundo=(Escenario1)this.getWorld();
        abrir=mundo.getBandOpenDoor();
    }

    /**
     * Este metodo revisa el nivel que se esta jugando y dependiendo de esto selcciona la siguiente accion
     * que puede ser pasar al siguiente nivel o terminar el juego.
     */
    public void ChecaNivel()
    {
        Escenario1 mundo= (Escenario1)super.getWorld();

        if(mundo!=null && mundo.getNivel()==3)
        {
            chango.incrementaPuntos();
            mundo.eliminaObjetos();
            mundo.prepare(9); 
        }

        if(mundo!=null && mundo.getNivel()==2)
        {
            mundo.eliminaObjetos();
            mundo.prepare(8); 
        }

        if(mundo!=null && mundo.getNivel()==1)
        {
            mundo.eliminaObjetos();
            mundo.prepare(6);
        }
        mundo.cambiaBandPuerta(false);
    }

}
